'use strict'

const titbit=require('titbit');
const {cookie,session}=require('titbit-toolkit')

const token=require('titbit-token');

let tok=new token({
    //token有效期，单位是秒
    expires:30,
    //必须是32位字母数字
    key:'mf37shunbianmf37suiyimf37laolong',
    //必须是16位字母数字
    iv:'zhaofuyu12345678'
})
const app=new titbit({
    debug:true
})
//先启用cookie，再启用session(不是必须成对出现的)
app.use(new cookie).use(new session)

//next作用是执行下一个，先执行这个，然后next跳到下一个模块，顺序是第一个use，next跳到第二个use，然后next跳到get
app.use(async (c, next)=>{
    c.setHeader('x-test-key',`${Math.random()}`)
    await next()
})
//可以通过添加name值和方法值来规定是全局还是特定某一路由的跳转
app.use(async (c,next)=>{
    if(c.query.say==='12345'){
        await next()
    }else{
        c.status(403).send('deny')
    }
},{name:['home'],method:['GET']})

app.get('/',async c=>{
    c.send('ok')
},{name:'home',group:'home'})

app.get('/test', async c=>{
    c.send('test is ok')
})

// app.get('/:x/:y',async c=>{
//     c.setSession('x',c.param.x)
//     c.setSession('y',c.param.y)
//     c.send(c.getSession())
// })

app.get('/token',async c=>{
    let tk=tok.make({
        id:'123',
        user:'node',
        level:12
    })
    c.send(tk)
})

app.get('/decrypt/:token',async c=>{
    c.send(tok.verify(c.param.token))
})
app.run(1235)